home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / games / scanconfig / getconfig.s next >
Text File  |  1980-01-03  |  4KB  |  182 lines

  1. *******************************************************************************
  2. * Get Configuration
  3. * ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  4. * Obtains names and ID strings of Amiga custom chips and the CPU installed in
  5. * the machine. It will also tell you if the Amiga is really a true NTSC or if
  6. * it is a PAL amiga in NTSC Emulation mode...
  7. *
  8. * $Inputs:    none
  9. * $Outputs:    a0.l = Alice/Agnus Type (APTR)
  10. *        d0.w = Alice/Agnus ID   (UWORD)
  11. *
  12. *        a1.l = Denise/Lisa Type (APTR)
  13. *        d1.w = Denise/Lisa ID   (UWORD)
  14. *
  15. *        a2.l = CPU Type        (APTR)  MC680x0 string
  16. *        d2.b = CPU ID        (UBYTE)    0=000,1=010,2=020,3=030,4=040
  17. *
  18. *        d3.b = PAL/NTSC ID    (UBYTE)    0=PAL, 1=NTSC
  19. *******************************************************************************
  20.  
  21. GetChipTypes:    move.l    4.w,a6
  22.         lea    GfxName(pc),a1        ;lib name in a1
  23.           jsr    -408(a6)        ;try to open library
  24.         move.l    d0,a1
  25.  
  26.         moveq    #0,d7            ;PAL Amiga!
  27.         btst    d7,207(a1)        ;check for NTSC/PAL...
  28.         beq.s    is_PAL
  29.         moveq    #1,d7            ;NTSC Amiga!
  30. is_PAL:
  31.         jsr    -414(a6)        ;close gfx library
  32.  
  33.         move.l    d7,-(sp)        ;save NTSC/PAL Type...
  34.  
  35.         move.w    $DFF004,d0
  36.         and.w    #$7F00,d0
  37.         lsr.w    #8,d0
  38.  
  39. is_NTSC:    lea    AgnusValues(pc),a2
  40.         move.w    d0,d5
  41.         bra.s    _start
  42.  
  43. loop:        move.w    d5,d0
  44.         move.w    (a2),d1
  45.         cmp.w    d0,d1
  46.         beq.s    GetChipID
  47.         addq.l    #1,d7
  48.         addq.l    #2,a2
  49.  
  50. _start:        moveq    #10,d0
  51.         cmp.l    d0,d7
  52.         blt.s    loop
  53.  
  54. GetChipID:    moveq    #0,d0
  55.         move.w    $DFF07C,d0
  56.         move.l    d0,d6
  57.         moveq    #0,d1
  58.         not.b    d1
  59.         and.l    d1,d6
  60.         move.l    d6,d4
  61.         moveq    #0,d5
  62.         bra.s    _DAE
  63.  
  64. _DA0:        moveq    #0,d0
  65.         move.w    d4,d0
  66.         cmp.l    d6,d0
  67.         beq.s    _DAC
  68.         moveq    #0,d4
  69.         bra.s    _DB4
  70.  
  71. _DAC:        addq.l    #1,d5
  72. _DAE:        moveq    #$10,d0
  73.         cmp.l    d0,d5
  74.         blt.s    _DA0
  75. _DB4:        cmp.w    #$FF,d4
  76.         bne.s    _DBC
  77.         moveq    #0,d4
  78. _DBC:        moveq    #0,d6
  79.         lea    ChipIDS(pc),a2
  80.         bra.s    _DCE
  81.  
  82. _DC4:        move.w    (a2),d0
  83.         cmp.w    d4,d0
  84.         beq.s    GetChipNames
  85.         addq.l    #1,d6
  86.         addq.l    #2,a2
  87. _DCE:        moveq    #4,d0
  88.         cmp.l    d0,d6
  89.         blt.s    _DC4
  90.  
  91. GetChipNames:    moveq    #0,d0
  92.         move.w    $DFF004,d0
  93.         and.l    #$7F00,d0
  94.         asr.l    #8,d0
  95.         moveq    #0,d1
  96.  
  97.         move.w    $DFF07C,d1
  98.         moveq    #0,d2
  99.         not.b    d2
  100.         and.l    d2,d1
  101.         move.l    d7,d2
  102.         add.l    d2,d2
  103.         move.l    d6,d3
  104.         add.l    d3,d3
  105.         lea    AgnusTable(pc),a0
  106.         lea    (a0,d2.l),a2
  107.         move.w    (a2),a0
  108.         add.l    a2,a0
  109.  
  110.         lea    ChipNames(pc),a1
  111.         lea    (a1,d3.l),a2
  112.         move.w    (a2),a1
  113.         add.l    a2,a1
  114.  
  115.         move.l    (sp)+,d3        ;restore PAL/NTSC Type
  116.  
  117.         movem.l    d0-d1/a0-a1,-(sp)
  118.         move.l    4.w,a6
  119.         move.b    AttnFlags+1(a6),d0    ;get CPU/MMU/CP Types from OS
  120.         andi.b    #%00001111,d0        ;we only want CPU types..
  121.         moveq    #"0",d1
  122. findcpu:    tst.b    d0            ;got cpu type yet?
  123.         beq.s    showcpu
  124.         lsr.b    #1,d0            ;check for next type...
  125.         addq.b    #1,d1            ;increase cpu type by 1
  126.         bra.s    findcpu
  127. showcpu:    lea    CPUType(pc),a2
  128.         move.b    d1,5(a2)
  129.         sub.b    #"0",d1
  130.         moveq    #0,d2
  131.         move.b    d1,d2
  132.         movem.l    (sp)+,d0-d1/a0-a1
  133.         rts
  134.  
  135. CPUType:    dc.b    'MC680x0',0        ;'x' inserted with 0,1,2,3 or 4
  136.         even
  137.  
  138. AgnusValues:    dc.w    $00,$10,$20,$30,$21,$31,$22,$32,$23,$33
  139. ChipIDS:    dc.w    $00,$FC,$EC,$F8
  140.  
  141. GfxName:    dc.b    'graphics.library',0
  142.         even
  143. AgnusTable:    dc.w    NormalPALAgnu-*
  144.         dc.w    NormalNTSCAgn-*
  145.         dc.w    ECSPALAgnus-*
  146.         dc.w    ECSNTSCAgnus-*
  147.         dc.w    ECSPALAgnus-*
  148.         dc.w    ECSNTSCAgnus-*
  149.         dc.w    AAPALAlice-*
  150.         dc.w    AANTSCAlice-*
  151.         dc.w    AAPALAlice-*
  152.         dc.w    AANTSCAlice-*
  153.         dc.w    AAPALAlice-*
  154.         dc.w    AANTSCAlice-*
  155.         dc.w    AAA_PALAlice-*
  156.         dc.w    AAA_NTSCAlice-*
  157.  
  158. ChipNames:    dc.w    NormalDenise-*
  159.         dc.w    ECSDenise-*
  160.         dc.w    ECSDenise-*
  161.         dc.w    AALisa-*
  162.         dc.w    UNKNOWN-*
  163.  
  164. NormalDenise:    dc.b    'Original Denise',0
  165. ECSDenise:    dc.b    'ECS Denise',0
  166. AALisa:        dc.b    'AGA Lisa',0
  167. UNKNOWN:    dc.b    'AAA Lisa?',0
  168.  
  169. NormalPALAgnu:    dc.b    'Original PAL Agnus',0
  170. ECSPALAgnus:    dc.b    'ECS PAL Agnus',0
  171. AAPALAlice:    dc.b    'AGA PAL Alice',0
  172. AAA_PALAlice:    dc.b    'AAA PAL Alice???',0
  173.  
  174. NormalNTSCAgn:    dc.b    'Orignal NTSC Agnus',0
  175. ECSNTSCAgnus:    dc.b    'ECS NTSC Agnus',0
  176. AANTSCAlice:    dc.b    'AGA NTSC Alice',0
  177. AAA_NTSCAlice:    dc.b    'AAA NTSC Alice???',0
  178.         even
  179.  
  180. AttnFlags    =    $128
  181.  
  182.